LLVM 20.0.0git
FDRRecordConsumer.h
Go to the documentation of this file.
1//===- FDRRecordConsumer.h - XRay Flight Data Recorder Mode Records -------===//
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#ifndef LLVM_XRAY_FDRRECORDCONSUMER_H
9#define LLVM_XRAY_FDRRECORDCONSUMER_H
10
11#include "llvm/Support/Error.h"
13#include <algorithm>
14#include <memory>
15#include <vector>
16
17namespace llvm {
18namespace xray {
19
21public:
22 virtual Error consume(std::unique_ptr<Record> R) = 0;
23 virtual ~RecordConsumer() = default;
24};
25
26// This consumer will collect all the records into a vector of records, in
27// arrival order.
29 std::vector<std::unique_ptr<Record>> &Records;
30
31public:
32 explicit LogBuilderConsumer(std::vector<std::unique_ptr<Record>> &R)
33 : Records(R) {}
34
35 Error consume(std::unique_ptr<Record> R) override;
36};
37
38// A PipelineConsumer applies a set of visitors to every consumed Record, in the
39// order by which the visitors are added to the pipeline in the order of
40// appearance.
42 std::vector<RecordVisitor *> Visitors;
43
44public:
45 PipelineConsumer(std::initializer_list<RecordVisitor *> V) : Visitors(V) {}
46
47 Error consume(std::unique_ptr<Record> R) override;
48};
49
50} // namespace xray
51} // namespace llvm
52
53#endif // LLVM_XRAY_FDRRECORDCONSUMER_H
Lightweight error class with error context and mandatory checking.
Definition: Error.h:160
LogBuilderConsumer(std::vector< std::unique_ptr< Record > > &R)
PipelineConsumer(std::initializer_list< RecordVisitor * > V)
virtual Error consume(std::unique_ptr< Record > R)=0
virtual ~RecordConsumer()=default
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18