LLVM 22.0.0git
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
19#include <optional>
20
21namespace llvm {
22namespace 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/// ...
36 /// The YAML streamer.
38
40 std::optional<StringTable> StrTab = std::nullopt);
41
42 void emit(const Remark &Remark) override;
43 std::unique_ptr<MetaSerializer> metaSerializer(
45 std::optional<StringRef> ExternalFilename = std::nullopt) override;
46
47 static bool classof(const RemarkSerializer *S) {
48 return S->SerializerFormat == Format::YAML;
49 }
50
51protected:
54 std::optional<StringTable> StrTab = std::nullopt);
55};
56
58 std::optional<StringRef> ExternalFilename;
59
62
63 void emit() override;
64};
65
66} // end namespace remarks
67} // end namespace llvm
68
69#endif // LLVM_REMARKS_YAMLREMARKSERIALIZER_H
#define LLVM_ABI
Definition Compiler.h:213
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition raw_ostream.h:53
The Output class is used to generate a yaml document from in-memory structs and vectors.
Format
The format used for serializing/deserializing remarks.
This is an optimization pass for GlobalISel generic memory operations.
raw_ostream & OS
The open raw_ostream that the metadata is emitted to.
Format SerializerFormat
The format of the serializer.
SerializerMode Mode
The serialization mode.
RemarkSerializer(Format SerializerFormat, raw_ostream &OS, SerializerMode Mode)
std::optional< StringTable > StrTab
The string table containing all the unique strings used in the output.
raw_ostream & OS
The open raw_ostream that the remark diagnostics are emitted to.
A remark type used for both emission and parsing.
Definition Remark.h:98
std::optional< StringRef > ExternalFilename
YAMLMetaSerializer(raw_ostream &OS, std::optional< StringRef > ExternalFilename)
std::unique_ptr< MetaSerializer > metaSerializer(raw_ostream &OS, std::optional< StringRef > ExternalFilename=std::nullopt) override
Return the corresponding metadata serializer.
YAMLRemarkSerializer(raw_ostream &OS, SerializerMode Mode, std::optional< StringTable > StrTab=std::nullopt)
static bool classof(const RemarkSerializer *S)
YAMLRemarkSerializer(Format SerializerFormat, raw_ostream &OS, SerializerMode Mode, std::optional< StringTable > StrTab=std::nullopt)
void emit(const Remark &Remark) override
Emit a remark to the stream.
yaml::Output YAMLOutput
The YAML streamer.