tianshilei1992 created this revision. Herald added subscribers: guansong, yaxunl. tianshilei1992 requested review of this revision. Herald added a reviewer: jdoerfert. Herald added subscribers: cfe-commits, sstefan1. Herald added a project: clang.
https://lists.llvm.org/pipermail/openmp-dev/2021-March/003940.html reports test failure in `openmp-offload-gpu.c`. The failure is, when using `-S` in the clang driver, it still reports bitcode library doesn't exist. However, it is not exposed in my local run and Phabiractor test. The reason it escaped from Phabricator test is, the test machine doesn't have CUDA, so `LibDeviceFile` is empty. In this case, the check of `OPT_S` will be hit, and we get "expected" result. However, if the test machine has CUDA, `LibDeviceFile` will not be empty, then the check will not be done, and it just proceeds, trying to add the bitcode library. The reason it escaped from my local run is, I didn't build ALL targets, so this case was marked UNSUPPORTED. In this patch, I just moved the check out of the code block, but the check is guarded by the `DeviceOffloadingKind == Action::OFK_OpenMP`. My question is, if `DeviceOffloadingKind == Action::OFK_Cuda`, and we use `-S`, do we also want to skip as well? Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D98902 Files: 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 @@ -696,13 +696,12 @@ if (DriverArgs.hasArg(options::OPT_nogpulib)) return; - std::string LibDeviceFile = CudaInstallation.getLibDeviceFile(GpuArch); + if (DeviceOffloadingKind == Action::OFK_OpenMP && + DriverArgs.hasArg(options::OPT_S)) + return; + 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; }
Index: clang/lib/Driver/ToolChains/Cuda.cpp =================================================================== --- clang/lib/Driver/ToolChains/Cuda.cpp +++ clang/lib/Driver/ToolChains/Cuda.cpp @@ -696,13 +696,12 @@ if (DriverArgs.hasArg(options::OPT_nogpulib)) return; - std::string LibDeviceFile = CudaInstallation.getLibDeviceFile(GpuArch); + if (DeviceOffloadingKind == Action::OFK_OpenMP && + DriverArgs.hasArg(options::OPT_S)) + return; + 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; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits