LLVM
15.0.0git
include
llvm
Remarks
RemarkStreamer.h
Go to the documentation of this file.
1
//===- llvm/Remarks/RemarkStreamer.h ----------------------------*- 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 declares the main interface for streaming remarks.
10
//
11
// This is used to stream any llvm::remarks::Remark to an open file taking
12
// advantage of all the serialization capabilities developed for remarks (e.g.
13
// metadata in a section, bitstream format, etc.).
14
//
15
// Typically, a specialized remark emitter should hold a reference to the main
16
// remark streamer set up in the LLVMContext, and should convert specialized
17
// diagnostics to llvm::remarks::Remark objects as they get emitted.
18
//
19
// Specialized remark emitters can be components like:
20
// * Remarks from LLVM (M)IR passes
21
// * Remarks from the frontend
22
// * Remarks from an intermediate IR
23
//
24
// This allows for composition between specialized remark emitters throughout
25
// the compilation pipeline, that end up in the same file, using the same format
26
// and serialization techniques.
27
//
28
//===----------------------------------------------------------------------===//
29
30
#ifndef LLVM_REMARKS_REMARKSTREAMER_H
31
#define LLVM_REMARKS_REMARKSTREAMER_H
32
33
#include "
llvm/ADT/Optional.h
"
34
#include "
llvm/Remarks/RemarkSerializer.h
"
35
#include "
llvm/Support/Error.h
"
36
#include "
llvm/Support/Regex.h
"
37
#include <memory>
38
39
namespace
llvm
{
40
41
class
raw_ostream;
42
43
namespace
remarks
{
44
class
RemarkStreamer
final {
45
/// The regex used to filter remarks based on the passes that emit them.
46
Optional<Regex>
PassFilter;
47
/// The object used to serialize the remarks to a specific format.
48
std::unique_ptr<remarks::RemarkSerializer>
RemarkSerializer
;
49
/// The filename that the remark diagnostics are emitted to.
50
const
Optional<std::string>
Filename;
51
52
public
:
53
RemarkStreamer
(std::unique_ptr<remarks::RemarkSerializer>
RemarkSerializer
,
54
Optional<StringRef>
Filename =
None
);
55
56
/// Return the filename that the remark diagnostics are emitted to.
57
Optional<StringRef>
getFilename
()
const
{
58
return
Filename ?
Optional<StringRef>
(*Filename) :
None
;
59
}
60
/// Return stream that the remark diagnostics are emitted to.
61
raw_ostream
&
getStream
() {
return
RemarkSerializer
->
OS
; }
62
/// Return the serializer used for this stream.
63
remarks::RemarkSerializer
&
getSerializer
() {
return
*
RemarkSerializer
; }
64
/// Set a pass filter based on a regex \p Filter.
65
/// Returns an error if the regex is invalid.
66
Error
setFilter
(
StringRef
Filter);
67
/// Check wether the string matches the filter.
68
bool
matchesFilter
(
StringRef
Str);
69
/// Check if the remarks also need to have associated metadata in a section.
70
bool
needsSection
()
const
;
71
};
72
}
// end namespace remarks
73
}
// end namespace llvm
74
75
#endif // LLVM_REMARKS_REMARKSTREAMER_H
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:17
Optional.h
llvm::remarks::RemarkStreamer
Definition:
RemarkStreamer.h:44
Error.h
llvm::Optional
Definition:
APInt.h:33
llvm::remarks::RemarkSerializer::OS
raw_ostream & OS
The open raw_ostream that the remark diagnostics are emitted to.
Definition:
RemarkSerializer.h:45
llvm::remarks::RemarkStreamer::RemarkStreamer
RemarkStreamer(std::unique_ptr< remarks::RemarkSerializer > RemarkSerializer, Optional< StringRef > Filename=None)
Definition:
RemarkStreamer.cpp:26
llvm::remarks::RemarkStreamer::getSerializer
remarks::RemarkSerializer & getSerializer()
Return the serializer used for this stream.
Definition:
RemarkStreamer.h:63
remarks
annotation remarks
Definition:
AnnotationRemarks.cpp:114
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition:
raw_ostream.h:54
llvm::remarks::RemarkStreamer::needsSection
bool needsSection() const
Check if the remarks also need to have associated metadata in a section.
Definition:
RemarkStreamer.cpp:49
llvm::None
const NoneType None
Definition:
None.h:24
llvm::remarks::RemarkSerializer
This is the base class for a remark serializer.
Definition:
RemarkSerializer.h:41
llvm::remarks::RemarkStreamer::getFilename
Optional< StringRef > getFilename() const
Return the filename that the remark diagnostics are emitted to.
Definition:
RemarkStreamer.h:57
Regex.h
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:
StringRef.h:58
llvm::remarks::RemarkStreamer::setFilter
Error setFilter(StringRef Filter)
Set a pass filter based on a regex Filter.
Definition:
RemarkStreamer.cpp:32
llvm::remarks::RemarkStreamer::getStream
raw_ostream & getStream()
Return stream that the remark diagnostics are emitted to.
Definition:
RemarkStreamer.h:61
llvm::remarks::RemarkStreamer::matchesFilter
bool matchesFilter(StringRef Str)
Check wether the string matches the filter.
Definition:
RemarkStreamer.cpp:42
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition:
Error.h:155
RemarkSerializer.h
Generated on Fri May 27 2022 20:32:51 for LLVM by
1.8.17