[PATCH] D117777: [OpenMP] Don't pass empty files to nvlink
Joseph Huber via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 20 10:12:19 PST 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rGaf5600420b93: [OpenMP] Don't pass empty files to nvlink (authored by jhuber6).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D117777/new/
https://reviews.llvm.org/D117777
Files:
clang/test/Driver/Inputs/openmp_static_device_link/empty.o
clang/test/Driver/Inputs/openmp_static_device_link/lib.bc
clang/test/Driver/fat_archive_nvptx.cpp
clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
Index: clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
===================================================================
--- clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
+++ clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
@@ -55,12 +55,22 @@
static cl::list<std::string>
NVArgs(cl::Sink, cl::desc("<options to be passed to nvlink>..."));
+static bool isEmptyFile(StringRef Filename) {
+ ErrorOr<std::unique_ptr<MemoryBuffer>> BufOrErr =
+ MemoryBuffer::getFileOrSTDIN(Filename, false, false);
+ if (std::error_code EC = BufOrErr.getError())
+ return false;
+ return (*BufOrErr)->getBuffer().empty();
+}
+
static Error runNVLink(std::string NVLinkPath,
SmallVectorImpl<std::string> &Args) {
std::vector<StringRef> NVLArgs;
NVLArgs.push_back(NVLinkPath);
+ StringRef Output = *(llvm::find(Args, "-o") + 1);
for (auto &Arg : Args) {
- NVLArgs.push_back(Arg);
+ if (!(sys::fs::exists(Arg) && Arg != Output && isEmptyFile(Arg)))
+ NVLArgs.push_back(Arg);
}
if (sys::ExecuteAndWait(NVLinkPath, NVLArgs))
Index: clang/test/Driver/fat_archive_nvptx.cpp
===================================================================
--- clang/test/Driver/fat_archive_nvptx.cpp
+++ clang/test/Driver/fat_archive_nvptx.cpp
@@ -10,7 +10,8 @@
// CHECK: clang{{.*}}"-cc1"{{.*}}"-triple" "nvptx64-nvidia-cuda"{{.*}}"-target-cpu" "[[GPU:sm_[0-9]+]]"{{.*}}"-o" "[[HOSTBC:.*.s]]" "-x" "c++"{{.*}}.cpp
// CHECK: clang-offload-bundler" "-unbundle" "-type=a" "-inputs={{.*}}/Inputs/openmp_static_device_link/libFatArchive.a" "-targets=openmp-nvptx64-nvidia-cuda-[[GPU]]" "-outputs=[[DEVICESPECIFICARCHIVE:.*.a]]" "-allow-missing-bundles"
// CHECK: clang-nvlink-wrapper{{.*}}"-o" "{{.*}}.out" "-arch" "[[GPU]]" "{{.*}}[[DEVICESPECIFICARCHIVE]]"
-// expected-no-diagnostics
+// RUN: not %clang -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda %s %S/Inputs/openmp_static_device_link/empty.o --libomptarget-nvptx-bc-path=%S/Inputs/openmp_static_device_link/lib.bc 2>&1 | FileCheck %s --check-prefix=EMPTY
+// EMPTY-NOT: Could not open input file
#ifndef HEADER
#define HEADER
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D117777.401683.patch
Type: text/x-patch
Size: 2146 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220120/c31a624b/attachment.bin>
More information about the cfe-commits
mailing list