diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 211a65e4cde62..ce40df21c708d 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -810,6 +810,12 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C, if (!CudaTC) { CudaTC = std::make_unique( *this, *CudaTriple, *HostTC, C.getInputArgs()); + + // Emit a warning if the detected CUDA version is too new. + CudaInstallationDetector &CudaInstallation = + static_cast(*CudaTC).CudaInstallation; + if (CudaInstallation.isValid()) + CudaInstallation.WarnIfUnsupportedVersion(); } C.addOffloadDeviceToolChain(CudaTC.get(), OFK); } else if (IsHIP) { diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 2862ef462ddf5..3a577650eb082 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -704,10 +704,8 @@ NVPTXToolChain::NVPTXToolChain(const Driver &D, const llvm::Triple &Triple, const ArgList &Args, bool Freestanding = false) : ToolChain(D, Triple, Args), CudaInstallation(D, HostTriple, Args), Freestanding(Freestanding) { - if (CudaInstallation.isValid()) { - CudaInstallation.WarnIfUnsupportedVersion(); + if (CudaInstallation.isValid()) getProgramPaths().push_back(std::string(CudaInstallation.getBinPath())); - } // Lookup binaries into the driver directory, this is used to // discover the 'nvptx-arch' executable. getProgramPaths().push_back(getDriver().Dir); diff --git a/clang/test/Driver/cuda-version-check.cu b/clang/test/Driver/cuda-version-check.cu index 82f144cf67638..92afd19ef8138 100644 --- a/clang/test/Driver/cuda-version-check.cu +++ b/clang/test/Driver/cuda-version-check.cu @@ -73,3 +73,11 @@ // UNKNOWN_VERSION: CUDA version is newer than the latest{{.*}} supported version // UNKNOWN_VERSION_CXX-NOT: unknown CUDA version + +// Check to make sure we do not emit these warnings for OpenMP or cross-compilation. +// RUN: %clang --target=x86_64-linux -v -### -fopenmp -nogpulib --offload-arch=sm_60 --cuda-path=%S/Inputs/CUDA-new/usr/local/cuda 2>&1 -x c %s | \ +// RUN: FileCheck %s --check-prefix=VERSION +// RUN: %clang --target=nvptx64-nvidia-cuda -v -### -nogpulib -march=sm_60 --cuda-path=%S/Inputs/CUDA-new/usr/local/cuda 2>&1 -x c %s | \ +// RUN: FileCheck %s --check-prefix=VERSION +// VERSION-NOT: CUDA version is newer than the latest{{.*}} supported version +