From 0e8506debae3ad534b4eecfa922fc6281506a635 Mon Sep 17 00:00:00 2001 From: Abhina Sreeskantharajan Date: Tue, 8 Jun 2021 14:44:45 -0400 Subject: [PATCH] [SystemZ][z/OS] Pass OpenFlags when creating tmp files This patch https://reviews.llvm.org/D102876 caused some lit regressions on z/OS because tmp files were no longer being opened based on binary/text mode. This patch passes OpenFlags when creating tmp files so we can open files in different modes. Reviewed By: amccarth Differential Revision: https://reviews.llvm.org/D103806 --- clang/lib/Frontend/CompilerInstance.cpp | 4 +++- llvm/include/llvm/Support/FileSystem.h | 3 ++- llvm/lib/Support/Path.cpp | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 32e7fdf..a70fe95 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -828,7 +828,9 @@ CompilerInstance::createOutputFileImpl(StringRef OutputPath, bool Binary, TempPath += OutputExtension; TempPath += ".tmp"; Expected ExpectedFile = - llvm::sys::fs::TempFile::create(TempPath); + llvm::sys::fs::TempFile::create( + TempPath, llvm::sys::fs::all_read | llvm::sys::fs::all_write, + Binary ? llvm::sys::fs::OF_None : llvm::sys::fs::OF_Text); llvm::Error E = handleErrors( ExpectedFile.takeError(), [&](const llvm::ECError &E) -> llvm::Error { diff --git a/llvm/include/llvm/Support/FileSystem.h b/llvm/include/llvm/Support/FileSystem.h index 526a97f..c7ab067 100644 --- a/llvm/include/llvm/Support/FileSystem.h +++ b/llvm/include/llvm/Support/FileSystem.h @@ -857,7 +857,8 @@ public: /// This creates a temporary file with createUniqueFile and schedules it for /// deletion with sys::RemoveFileOnSignal. static Expected create(const Twine &Model, - unsigned Mode = all_read | all_write); + unsigned Mode = all_read | all_write, + OpenFlags ExtraFlags = OF_None); TempFile(TempFile &&Other); TempFile &operator=(TempFile &&Other); diff --git a/llvm/lib/Support/Path.cpp b/llvm/lib/Support/Path.cpp index d549b00..a724ba2 100644 --- a/llvm/lib/Support/Path.cpp +++ b/llvm/lib/Support/Path.cpp @@ -1288,11 +1288,12 @@ Error TempFile::keep() { return Error::success(); } -Expected TempFile::create(const Twine &Model, unsigned Mode) { +Expected TempFile::create(const Twine &Model, unsigned Mode, + OpenFlags ExtraFlags) { int FD; SmallString<128> ResultPath; if (std::error_code EC = - createUniqueFile(Model, FD, ResultPath, OF_Delete, Mode)) + createUniqueFile(Model, FD, ResultPath, OF_Delete | ExtraFlags, Mode)) return errorCodeToError(EC); TempFile Ret(ResultPath, FD); -- 2.7.4