LLVM
22.0.0git
include
llvm
Remarks
YAMLRemarkSerializer.h
Go to the documentation of this file.
1
//===-- YAMLRemarkSerializer.h - YAML Remark serialization ---*- C++ -*-===//
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
// This file provides an interface for serializing remarks to YAML.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_REMARKS_YAMLREMARKSERIALIZER_H
14
#define LLVM_REMARKS_YAMLREMARKSERIALIZER_H
15
16
#include "
llvm/Remarks/RemarkSerializer.h
"
17
#include "
llvm/Support/Compiler.h
"
18
#include "
llvm/Support/YAMLTraits.h
"
19
#include <optional>
20
21
namespace
llvm
{
22
namespace
remarks
{
23
24
/// Serialize the remarks to YAML. One remark entry looks like this:
25
/// --- !<TYPE>
26
/// Pass: <PASSNAME>
27
/// Name: <REMARKNAME>
28
/// DebugLoc: { File: <SOURCEFILENAME>, Line: <SOURCELINE>,
29
/// Column: <SOURCECOLUMN> }
30
/// Function: <FUNCTIONNAME>
31
/// Args:
32
/// - <KEY>: <VALUE>
33
/// DebugLoc: { File: <FILE>, Line: <LINE>, Column: <COL> }
34
/// ...
35
struct
LLVM_ABI
YAMLRemarkSerializer
:
public
RemarkSerializer
{
36
/// The YAML streamer.
37
yaml::Output
YAMLOutput
;
38
39
YAMLRemarkSerializer
(
raw_ostream
&
OS
,
SerializerMode
Mode
,
40
std::optional<StringTable>
StrTab
= std::nullopt);
41
42
void
emit
(
const
Remark
&
Remark
)
override
;
43
std::unique_ptr<MetaSerializer>
metaSerializer
(
44
raw_ostream
&
OS
,
45
std::optional<StringRef> ExternalFilename = std::nullopt)
override
;
46
47
static
bool
classof
(
const
RemarkSerializer
*S) {
48
return
S->
SerializerFormat
==
Format::YAML
;
49
}
50
51
protected
:
52
YAMLRemarkSerializer
(
Format
SerializerFormat
,
raw_ostream
&
OS
,
53
SerializerMode
Mode
,
54
std::optional<StringTable>
StrTab
= std::nullopt);
55
};
56
57
struct
LLVM_ABI
YAMLMetaSerializer
:
public
MetaSerializer
{
58
std::optional<StringRef>
ExternalFilename
;
59
60
YAMLMetaSerializer
(
raw_ostream
&
OS
, std::optional<StringRef>
ExternalFilename
)
61
:
MetaSerializer
(
OS
),
ExternalFilename
(
ExternalFilename
) {}
62
63
void
emit()
override
;
64
};
65
66
}
// end namespace remarks
67
}
// end namespace llvm
68
69
#endif
// LLVM_REMARKS_YAMLREMARKSERIALIZER_H
Compiler.h
LLVM_ABI
#define LLVM_ABI
Definition
Compiler.h:213
RemarkSerializer.h
YAMLTraits.h
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition
raw_ostream.h:53
llvm::yaml::Output
The Output class is used to generate a yaml document from in-memory structs and vectors.
Definition
YAMLTraits.h:1470
llvm::remarks
Definition
AsmPrinter.h:85
llvm::remarks::Format
Format
The format used for serializing/deserializing remarks.
Definition
RemarkFormat.h:26
llvm::remarks::Format::YAML
@ YAML
Definition
RemarkFormat.h:26
llvm::remarks::SerializerMode
SerializerMode
Definition
RemarkSerializer.h:29
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition
AddressRanges.h:18
llvm::remarks::MetaSerializer::MetaSerializer
MetaSerializer(raw_ostream &OS)
Definition
RemarkSerializer.h:73
llvm::remarks::MetaSerializer::OS
raw_ostream & OS
The open raw_ostream that the metadata is emitted to.
Definition
RemarkSerializer.h:71
llvm::remarks::RemarkSerializer::SerializerFormat
Format SerializerFormat
The format of the serializer.
Definition
RemarkSerializer.h:45
llvm::remarks::RemarkSerializer::Mode
SerializerMode Mode
The serialization mode.
Definition
RemarkSerializer.h:49
llvm::remarks::RemarkSerializer::RemarkSerializer
RemarkSerializer(Format SerializerFormat, raw_ostream &OS, SerializerMode Mode)
Definition
RemarkSerializer.h:54
llvm::remarks::RemarkSerializer::StrTab
std::optional< StringTable > StrTab
The string table containing all the unique strings used in the output.
Definition
RemarkSerializer.h:52
llvm::remarks::RemarkSerializer::OS
raw_ostream & OS
The open raw_ostream that the remark diagnostics are emitted to.
Definition
RemarkSerializer.h:47
llvm::remarks::Remark
A remark type used for both emission and parsing.
Definition
Remark.h:98
llvm::remarks::YAMLMetaSerializer::ExternalFilename
std::optional< StringRef > ExternalFilename
Definition
YAMLRemarkSerializer.h:58
llvm::remarks::YAMLMetaSerializer::YAMLMetaSerializer
YAMLMetaSerializer(raw_ostream &OS, std::optional< StringRef > ExternalFilename)
Definition
YAMLRemarkSerializer.h:60
llvm::remarks::YAMLRemarkSerializer::metaSerializer
std::unique_ptr< MetaSerializer > metaSerializer(raw_ostream &OS, std::optional< StringRef > ExternalFilename=std::nullopt) override
Return the corresponding metadata serializer.
Definition
YAMLRemarkSerializer.cpp:148
llvm::remarks::YAMLRemarkSerializer::YAMLRemarkSerializer
YAMLRemarkSerializer(raw_ostream &OS, SerializerMode Mode, std::optional< StringTable > StrTab=std::nullopt)
Definition
YAMLRemarkSerializer.cpp:134
llvm::remarks::YAMLRemarkSerializer::classof
static bool classof(const RemarkSerializer *S)
Definition
YAMLRemarkSerializer.h:47
llvm::remarks::YAMLRemarkSerializer::YAMLRemarkSerializer
YAMLRemarkSerializer(Format SerializerFormat, raw_ostream &OS, SerializerMode Mode, std::optional< StringTable > StrTab=std::nullopt)
llvm::remarks::YAMLRemarkSerializer::emit
void emit(const Remark &Remark) override
Emit a remark to the stream.
Definition
YAMLRemarkSerializer.cpp:141
llvm::remarks::YAMLRemarkSerializer::YAMLOutput
yaml::Output YAMLOutput
The YAML streamer.
Definition
YAMLRemarkSerializer.h:37
Generated on
for LLVM by
1.14.0