diff options
| author | Kai Nacke <kai.nacke@redstar.de> | 2019-10-08 08:21:20 +0000 |
|---|---|---|
| committer | Kai Nacke <kai.nacke@redstar.de> | 2019-10-08 08:21:20 +0000 |
| commit | c9ddda84052659698b921e6c3a5bf7df9df599ce (patch) | |
| tree | 4953dbeb6c12adf8534e0313b1cac53ffeb15ac7 /llvm/lib/IR/RemarkStreamer.cpp | |
| parent | d2e9dd3877e903812ed5568e3a59e9e124ca4f85 (diff) | |
| download | bcm5719-llvm-c9ddda84052659698b921e6c3a5bf7df9df599ce.tar.gz bcm5719-llvm-c9ddda84052659698b921e6c3a5bf7df9df599ce.zip | |
[Tools] Mark output of tools as text if it is text
Several LLVM tools write text files/streams without using OF_Text.
This can cause problems on platforms which distinguish between
text and binary output. This PR adds the OF_Text flag for the
following tools:
- llvm-dis
- llvm-dwarfdump
- llvm-mca
- llvm-mc (assembler files only)
- opt (assembler files only)
- RemarkStreamer (used e.g. by opt)
Reviewers: rnk, vivekvpandya, Bigcheese, andreadb
Differential Revision: https://reviews.llvm.org/D67696
llvm-svn: 374024
Diffstat (limited to 'llvm/lib/IR/RemarkStreamer.cpp')
| -rw-r--r-- | llvm/lib/IR/RemarkStreamer.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/IR/RemarkStreamer.cpp b/llvm/lib/IR/RemarkStreamer.cpp index 8a70862de72..0fcc06b961f 100644 --- a/llvm/lib/IR/RemarkStreamer.cpp +++ b/llvm/lib/IR/RemarkStreamer.cpp @@ -122,18 +122,20 @@ llvm::setupOptimizationRemarks(LLVMContext &Context, StringRef RemarksFilename, if (RemarksFilename.empty()) return nullptr; + Expected<remarks::Format> Format = remarks::parseFormat(RemarksFormat); + if (Error E = Format.takeError()) + return make_error<RemarkSetupFormatError>(std::move(E)); + std::error_code EC; + auto Flags = *Format == remarks::Format::YAML ? sys::fs::OF_Text + : sys::fs::OF_None; auto RemarksFile = - std::make_unique<ToolOutputFile>(RemarksFilename, EC, sys::fs::OF_None); + std::make_unique<ToolOutputFile>(RemarksFilename, EC, Flags); // We don't use llvm::FileError here because some diagnostics want the file // name separately. if (EC) return make_error<RemarkSetupFileError>(errorCodeToError(EC)); - Expected<remarks::Format> Format = remarks::parseFormat(RemarksFormat); - if (Error E = Format.takeError()) - return make_error<RemarkSetupFormatError>(std::move(E)); - Expected<std::unique_ptr<remarks::RemarkSerializer>> RemarkSerializer = remarks::createRemarkSerializer( *Format, remarks::SerializerMode::Separate, RemarksFile->os()); |

