jhuber6 updated this revision to Diff 401646. jhuber6 added a comment. Herald added a subscriber: asavonic.
Adding test 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
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
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits