diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -299,8 +299,6 @@ return; } - CC1Args.push_back("-internal-isystem"); - CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath())); CC1Args.push_back("-include"); CC1Args.push_back("__clang_cuda_runtime_wrapper.h"); } @@ -867,6 +865,11 @@ void CudaToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, ArgStringList &CC1Args) const { HostTC.AddClangSystemIncludeArgs(DriverArgs, CC1Args); + + if (!DriverArgs.hasArg(options::OPT_nogpuinc) && CudaInstallation.isValid()) + CC1Args.append( + {"-internal-isystem", + DriverArgs.MakeArgString(CudaInstallation.getIncludePath())}); } void CudaToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args, diff --git a/clang/test/Driver/cuda-detect.cu b/clang/test/Driver/cuda-detect.cu --- a/clang/test/Driver/cuda-detect.cu +++ b/clang/test/Driver/cuda-detect.cu @@ -179,10 +179,10 @@ // LIBDEVICE50-SAME: libdevice.compute_50.10.bc // PTX42-SAME: "-target-feature" "+ptx42" // PTX60-SAME: "-target-feature" "+ptx60" -// CUDAINC-SAME: "-internal-isystem" "{{.*}}/Inputs/CUDA{{[_0-9]+}}/usr/local/cuda/include" -// NOCUDAINC-NOT: "-internal-isystem" "{{.*}}/cuda/include" // CUDAINC-SAME: "-include" "__clang_cuda_runtime_wrapper.h" // NOCUDAINC-NOT: "-include" "__clang_cuda_runtime_wrapper.h" +// CUDAINC-SAME: "-internal-isystem" "{{.*}}/Inputs/CUDA{{[_0-9]+}}/usr/local/cuda/include" +// NOCUDAINC-NOT: "-internal-isystem" "{{.*}}/cuda/include" // -internal-externc-isystem flags must come *after* the cuda include flags, // because we must search the cuda include directory first. // CUDAINC-SAME: "-internal-externc-isystem"