MLIR  22.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/ToolOutputFile.h"
18 
19 namespace mlir::remark::detail {
20 
21 /// Concrete streamer that writes LLVM optimization remarks to a file
22 /// (YAML or Bitstream). Lives outside core.
24 public:
25  static FailureOr<std::unique_ptr<MLIRRemarkStreamerBase>>
26  createToFile(llvm::StringRef path, llvm::remarks::Format fmt);
27 
28  void streamOptimizationRemark(const Remark &remark) override;
29  void finalize() override {}
30  ~LLVMRemarkStreamer() override;
31 
32 private:
33  LLVMRemarkStreamer() = default;
34 
35  std::unique_ptr<class llvm::remarks::RemarkStreamer> remarkStreamer;
36  std::unique_ptr<class llvm::ToolOutputFile> file;
37 };
38 } // namespace mlir::remark::detail
39 
40 namespace mlir::remark {
41 /// Enable optimization remarks to a file with the given path and format.
42 /// The remark categories are used to filter the remarks that are emitted.
43 /// If the printAsEmitRemarks flag is set, remarks will also be printed using
44 /// mlir::emitRemarks.
46  MLIRContext &ctx, StringRef filePath, llvm::remarks::Format fmt,
47  const RemarkCategories &cat, bool printAsEmitRemarks = false);
48 
49 } // namespace mlir::remark
MLIRContext is the top-level object for a collection of MLIR operations.
Definition: MLIRContext.h:63
Concrete streamer that writes LLVM optimization remarks to a file (YAML or Bitstream).
static FailureOr< std::unique_ptr< MLIRRemarkStreamerBase > > createToFile(llvm::StringRef path, llvm::remarks::Format fmt)
void streamOptimizationRemark(const Remark &remark) override
Stream an optimization remark to the underlying remark streamer.
Base class for MLIR remark streamers that is used to stream optimization remarks to the underlying re...
Definition: Remarks.h:328
LogicalResult enableOptimizationRemarksWithLLVMStreamer(MLIRContext &ctx, StringRef filePath, llvm::remarks::Format fmt, const RemarkCategories &cat, bool printAsEmitRemarks=false)
Enable optimization remarks to a file with the given path and format.