MLIR 24.0.0git
RemarkStreamer.h
Go to the documentation of this file.
1//===- RemarkStreamer.h - MLIR Optimization Remark ---------------*-===//
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 defines LLVMRemarkStreamer plugging class that uses LLVM's
10// streamer.
11//
12//===----------------------------------------------------------------------===//
13
14#include "mlir/IR/Remarks.h"
15
16#include "llvm/Remarks/RemarkStreamer.h"
17#include "llvm/Support/Error.h"
18#include "llvm/Support/ToolOutputFile.h"
19
20namespace mlir::remark::detail {
21
22/// Concrete streamer that writes LLVM optimization remarks to a file
23/// (YAML or Bitstream). Lives outside core.
24class LLVMRemarkStreamer final : public MLIRRemarkStreamerBase {
25public:
26 /// Open \p path and create the serializer for \p fmt.
28 createToFile(llvm::StringRef path, llvm::remarks::Format fmt);
29
30 void streamOptimizationRemark(const Remark &remark) override;
31 void finalize() override;
32 ~LLVMRemarkStreamer() override;
33
34private:
35 LLVMRemarkStreamer() = default;
36
37 std::unique_ptr<class llvm::ToolOutputFile> file;
38 // RemarkStreamer must be destructed before file is destroyed!
39 std::unique_ptr<class llvm::remarks::RemarkStreamer> remarkStreamer;
40};
41} // namespace mlir::remark::detail
42
43namespace mlir::remark {
44/// Enable optimization remarks to a file with the given path and format.
45/// The remark categories are used to filter the remarks that are emitted.
46/// If the printAsEmitRemarks flag is set, remarks will also be printed using
47/// mlir::emitRemarks. If the file cannot be opened or the serializer cannot be
48/// created, an error is emitted on the context.
50 MLIRContext &ctx, StringRef filePath, llvm::remarks::Format fmt,
51 std::unique_ptr<detail::RemarkEmittingPolicyBase> remarkEmittingPolicy,
52 const RemarkCategories &cat, bool printAsEmitRemarks = false);
53
54} // namespace mlir::remark
MLIRContext is the top-level object for a collection of MLIR operations.
Definition MLIRContext.h:64
void streamOptimizationRemark(const Remark &remark) override
Stream an optimization remark to the underlying remark streamer.
static llvm::Expected< std::unique_ptr< MLIRRemarkStreamerBase > > createToFile(llvm::StringRef path, llvm::remarks::Format fmt)
Open path and create the serializer for fmt.
Base class for MLIR remark streamers that is used to stream optimization remarks to the underlying re...
Definition Remarks.h:452
LogicalResult enableOptimizationRemarksWithLLVMStreamer(MLIRContext &ctx, StringRef filePath, llvm::remarks::Format fmt, std::unique_ptr< detail::RemarkEmittingPolicyBase > remarkEmittingPolicy, const RemarkCategories &cat, bool printAsEmitRemarks=false)
Enable optimization remarks to a file with the given path and format.
Define an the set of categories to accept.
Definition Remarks.h:64