jhuber6 created this revision. jhuber6 added reviewers: tra, yaxunl, jdoerfert, tianshilei1992, JonChesterfield. Herald added a subscriber: mattd. Herald added a project: All. jhuber6 requested review of this revision. Herald added subscribers: cfe-commits, wangpc, jplehr, sstefan1, MaskRay. Herald added a project: clang.
This warning primarily applies to users of the CUDA langues as there may be new features we rely on. The other two users of the toolchain are OpenMP via `-fopenmp --offload-arch=sm_70` and a cross-compiled build via `--target=nvptx64-nvida-cuda -march=sm_70`. Both of these do not rely directly on things that would change significantly between CUDA versions, and the way they are built can sometims make this warning print many times. This patch changees the behaiour to only check for the version when building for CUDA offloading specifically, the other two will not have this check. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D155606 Files: clang/lib/Driver/Driver.cpp clang/lib/Driver/ToolChains/Cuda.cpp Index: clang/lib/Driver/ToolChains/Cuda.cpp =================================================================== --- clang/lib/Driver/ToolChains/Cuda.cpp +++ clang/lib/Driver/ToolChains/Cuda.cpp @@ -704,10 +704,8 @@ 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); Index: clang/lib/Driver/Driver.cpp =================================================================== --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -810,6 +810,12 @@ if (!CudaTC) { CudaTC = std::make_unique<toolchains::CudaToolChain>( *this, *CudaTriple, *HostTC, C.getInputArgs()); + + // Emit a warning if the CUDA installation is too old. + CudaInstallationDetector &CudaInstallation = + static_cast<toolchains::CudaToolChain &>(*CudaTC).CudaInstallation; + if (CudaInstallation.isValid()) + CudaInstallation.WarnIfUnsupportedVersion(); } C.addOffloadDeviceToolChain(CudaTC.get(), OFK); } else if (IsHIP) {
Index: clang/lib/Driver/ToolChains/Cuda.cpp =================================================================== --- clang/lib/Driver/ToolChains/Cuda.cpp +++ clang/lib/Driver/ToolChains/Cuda.cpp @@ -704,10 +704,8 @@ 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); Index: clang/lib/Driver/Driver.cpp =================================================================== --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -810,6 +810,12 @@ if (!CudaTC) { CudaTC = std::make_unique<toolchains::CudaToolChain>( *this, *CudaTriple, *HostTC, C.getInputArgs()); + + // Emit a warning if the CUDA installation is too old. + CudaInstallationDetector &CudaInstallation = + static_cast<toolchains::CudaToolChain &>(*CudaTC).CudaInstallation; + if (CudaInstallation.isValid()) + CudaInstallation.WarnIfUnsupportedVersion(); } C.addOffloadDeviceToolChain(CudaTC.get(), OFK); } else if (IsHIP) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits