Coverage Report

Created: 2020-06-26 05:44

/home/arjun/llvm-project/mlir/include/mlir/IR/AsmState.h
Line
Count
Source (jump to first uncovered line)
1
//===- AsmState.h - State class for AsmPrinter ------------------*- 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 defines the AsmState class.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef MLIR_IR_ASMSTATE_H_
14
#define MLIR_IR_ASMSTATE_H_
15
16
#include "mlir/Support/LLVM.h"
17
18
#include <memory>
19
20
namespace mlir {
21
class Operation;
22
23
namespace detail {
24
class AsmStateImpl;
25
} // end namespace detail
26
27
/// This class provides management for the lifetime of the state used when
28
/// printing the IR. It allows for alleviating the cost of recomputing the
29
/// internal state of the asm printer.
30
///
31
/// The IR should not be mutated in-between invocations using this state, and
32
/// the IR being printed must not be an parent of the IR originally used to
33
/// initialize this state. This means that if a child operation is provided, a
34
/// parent operation cannot reuse this state.
35
class AsmState {
36
public:
37
  /// This map represents the raw locations of operations within the output
38
  /// stream. This maps the original pointer to the operation, to a pair of line
39
  /// and column in the output stream.
40
  using LocationMap = DenseMap<Operation *, std::pair<unsigned, unsigned>>;
41
42
  /// Initialize the asm state at the level of the given operation. A location
43
  /// map may optionally be provided to be populated when printing.
44
  AsmState(Operation *op, LocationMap *locationMap = nullptr);
45
  ~AsmState();
46
47
  /// Return an instance of the internal implementation. Returns nullptr if the
48
  /// state has not been initialized.
49
0
  detail::AsmStateImpl &getImpl() { return *impl; }
50
51
private:
52
  AsmState() = delete;
53
54
  /// A pointer to allocated storage for the impl state.
55
  std::unique_ptr<detail::AsmStateImpl> impl;
56
};
57
58
//===----------------------------------------------------------------------===//
59
// AsmPrinter CommandLine Options
60
//===----------------------------------------------------------------------===//
61
62
/// Register a set of useful command-line options that can be used to configure
63
/// various flags within the AsmPrinter.
64
void registerAsmPrinterCLOptions();
65
66
} // end namespace mlir
67
68
#endif // MLIR_IR_ASMSTATE_H_