From 5a3608ccfaa95dab801df9e651967168d8555719 Mon Sep 17 00:00:00 2001 From: Gheorghe-Teodor Bercea Date: Tue, 26 Sep 2017 15:36:20 +0000 Subject: [PATCH] [OpenMP] Don't throw cudalib not found error if only front-end is required. Summary: If we only use the compiler front-end, do not throw an error about the cuda device library not being found. This allows the front-end to be run on systems where no Cuda installation is found. Reviewers: Hahnfeld, ABataev, carlo.bertolli, caomhin, tra Reviewed By: tra Subscribers: hfinkel, tra, cfe-commits Differential Revision: https://reviews.llvm.org/D37914 llvm-svn: 314217 --- clang/lib/Driver/ToolChains/Cuda.cpp | 4 ++++ clang/test/Driver/openmp-offload-gpu.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 6378735..349f9e4 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 81e1dfc..8558a36 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 -- 2.7.4