Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/tools/llvm-remarkutil/RemarkUtilHelpers.cpp
35231 views
1
//===- RemarkUtilHelpers.cpp ----------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Helpers for remark utilites
10
//
11
//===----------------------------------------------------------------------===//
12
#include "RemarkUtilHelpers.h"
13
14
namespace llvm {
15
namespace remarks {
16
/// \returns A MemoryBuffer for the input file on success, and an Error
17
/// otherwise.
18
Expected<std::unique_ptr<MemoryBuffer>>
19
getInputMemoryBuffer(StringRef InputFileName) {
20
auto MaybeBuf = MemoryBuffer::getFileOrSTDIN(InputFileName);
21
if (auto ErrorCode = MaybeBuf.getError())
22
return createStringError(ErrorCode,
23
Twine("Cannot open file '" + InputFileName +
24
"': " + ErrorCode.message()));
25
return std::move(*MaybeBuf);
26
}
27
28
/// \returns A ToolOutputFile which can be used for outputting the results of
29
/// some tool mode.
30
/// \p OutputFileName is the desired destination.
31
/// \p Flags controls whether or not the file is opened for writing in text
32
/// mode, as a binary, etc. See sys::fs::OpenFlags for more detail.
33
Expected<std::unique_ptr<ToolOutputFile>>
34
getOutputFileWithFlags(StringRef OutputFileName, sys::fs::OpenFlags Flags) {
35
if (OutputFileName == "")
36
OutputFileName = "-";
37
std::error_code ErrorCode;
38
auto OF = std::make_unique<ToolOutputFile>(OutputFileName, ErrorCode, Flags);
39
if (ErrorCode)
40
return errorCodeToError(ErrorCode);
41
return std::move(OF);
42
}
43
44
/// \returns A ToolOutputFile which can be used for writing remarks on success,
45
/// and an Error otherwise.
46
/// \p OutputFileName is the desired destination.
47
/// \p OutputFormat
48
Expected<std::unique_ptr<ToolOutputFile>>
49
getOutputFileForRemarks(StringRef OutputFileName, Format OutputFormat) {
50
assert((OutputFormat == Format::YAML || OutputFormat == Format::Bitstream) &&
51
"Expected one of YAML or Bitstream!");
52
return getOutputFileWithFlags(OutputFileName, OutputFormat == Format::YAML
53
? sys::fs::OF_TextWithCRLF
54
: sys::fs::OF_None);
55
}
56
} // namespace remarks
57
} // namespace llvm
58
59