Yes, in general our testing story around the CUDA installs needs work. In particular, our wrapper headers are complicated and fragile, and have zero coverage at the moment. That's why Art is working on getting CUDA tests into the test-suite.
It's possible to test this particular change without access to a full CUDA installation. However, I was hesitant to do so, because such a test would have to create a fake cuda installation. Our test would then be fragile with respect to exactly how clang detects that a CUDA install is "real". If we changed those heuristics, we'd have to change our test. On Tue, Apr 19, 2016 at 11:21 AM, Chandler Carruth <chandl...@gmail.com> wrote: > This commit is missing a test. > > > On Fri, Apr 15, 2016 at 5:16 PM Justin Lebar via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> >> Author: jlebar >> Date: Fri Apr 15 19:11:11 2016 >> New Revision: 266496 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=266496&view=rev >> Log: >> [CUDA] Raise an error if the CUDA install can't be found. >> >> Summary: >> Without this change, we silently proceed on without including >> __clang_cuda_runtime_wrapper.h. This leads to very strange behavior -- >> you say you're compiling CUDA code, but e.g. __device__ is not defined! >> >> Reviewers: tra >> >> Subscribers: cfe-commits >> >> Differential Revision: http://reviews.llvm.org/D19180 >> >> Modified: >> cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td >> cfe/trunk/lib/Driver/ToolChains.cpp >> >> Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=266496&r1=266495&r2=266496&view=diff >> >> ============================================================================== >> --- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original) >> +++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Fri Apr 15 >> 19:11:11 2016 >> @@ -23,6 +23,9 @@ def err_drv_unknown_language : Error<"la >> def err_drv_invalid_arch_name : Error< >> "invalid arch name '%0'">; >> def err_drv_cuda_bad_gpu_arch : Error<"Unsupported CUDA gpu architecture: >> %0">; >> +def err_drv_no_cuda_installation : Error< >> + "cannot find CUDA installation. Provide its path via --cuda-path, or >> pass " >> + "-nocudainc to build without CUDA includes.">; >> def err_drv_invalid_thread_model_for_target : Error< >> "invalid thread model '%0' in '%1' for this target">; >> def err_drv_invalid_linker_name : Error< >> >> Modified: cfe/trunk/lib/Driver/ToolChains.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=266496&r1=266495&r2=266496&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Driver/ToolChains.cpp (original) >> +++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Apr 15 19:11:11 2016 >> @@ -4118,11 +4118,14 @@ void Linux::AddCudaIncludeArgs(const Arg >> if (DriverArgs.hasArg(options::OPT_nocudainc)) >> return; >> >> - if (CudaInstallation.isValid()) { >> - addSystemInclude(DriverArgs, CC1Args, >> CudaInstallation.getIncludePath()); >> - CC1Args.push_back("-include"); >> - CC1Args.push_back("__clang_cuda_runtime_wrapper.h"); >> + if (!CudaInstallation.isValid()) { >> + getDriver().Diag(diag::err_drv_no_cuda_installation); >> + return; >> } >> + >> + addSystemInclude(DriverArgs, CC1Args, >> CudaInstallation.getIncludePath()); >> + CC1Args.push_back("-include"); >> + CC1Args.push_back("__clang_cuda_runtime_wrapper.h"); >> } >> >> bool Linux::isPIEDefault() const { return >> getSanitizerArgs().requiresPIE(); } >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits