diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Driver/ToolChains/Cuda.cpp | 4 | ||||
| -rw-r--r-- | clang/test/Driver/openmp-offload-gpu.c | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 6378735a876..349f9e4f51a 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -500,6 +500,10 @@ void CudaToolChain::addClangTargetOptions( std::string LibDeviceFile = CudaInstallation.getLibDeviceFile(GpuArch); if (LibDeviceFile.empty()) { + if (DeviceOffloadingKind == Action::OFK_OpenMP && + DriverArgs.hasArg(options::OPT_S)) + return; + getDriver().Diag(diag::err_drv_no_cuda_libdevice) << GpuArch; return; } diff --git a/clang/test/Driver/openmp-offload-gpu.c b/clang/test/Driver/openmp-offload-gpu.c index 81e1dfcb981..8558a36c672 100644 --- a/clang/test/Driver/openmp-offload-gpu.c +++ b/clang/test/Driver/openmp-offload-gpu.c @@ -135,3 +135,13 @@ // RUN: | FileCheck -check-prefix=CHK-FLAG-NOLIBDEVICE %s // CHK-FLAG-NOLIBDEVICE-NOT: error:{{.*}}sm_60 + +/// ########################################################################### + +/// Check that error is not thrown by toolchain when no cuda lib device is found when using -S. +/// Check that the flag is passed when -fopenmp-relocatable-target is used. +// RUN: %clang -### -S -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target -march=sm_60 \ +// RUN: -fopenmp-relocatable-target -save-temps -no-canonical-prefixes %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-NOLIBDEVICE %s + +// CHK-NOLIBDEVICE-NOT: error:{{.*}}sm_60 |

