diff --git a/clang/test/Driver/Inputs/openmp_static_device_link/empty.o b/clang/test/Driver/Inputs/openmp_static_device_link/empty.o new file mode 100644 diff --git a/clang/test/Driver/Inputs/openmp_static_device_link/lib.bc b/clang/test/Driver/Inputs/openmp_static_device_link/lib.bc new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@&1 | FileCheck %s --check-prefix=EMPTY +// EMPTY-NOT: Could not open input file #ifndef HEADER #define HEADER diff --git a/clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp b/clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp --- a/clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp +++ b/clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp @@ -55,12 +55,22 @@ static cl::list NVArgs(cl::Sink, cl::desc("...")); +static bool isEmptyFile(StringRef Filename) { + ErrorOr> 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 &Args) { std::vector 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))