llvm/mlir/include/mlir/Pass/PassInstrumentation.h

//===- PassInstrumentation.h ------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef MLIR_PASS_PASSINSTRUMENTATION_H_
#define MLIR_PASS_PASSINSTRUMENTATION_H_

#include "mlir/Support/LLVM.h"
#include "mlir/Support/TypeID.h"
#include <optional>

namespace mlir {
class OperationName;
class Operation;
class Pass;

namespace detail {
struct PassInstrumentorImpl;
} // namespace detail

/// PassInstrumentation provides several entry points into the pass manager
/// infrastructure. Instrumentations should be added directly to a PassManager
/// before running a pipeline.
class PassInstrumentation {};

/// This class holds a collection of PassInstrumentation objects, and invokes
/// their respective call backs.
class PassInstrumentor {};

} // namespace mlir

namespace llvm {
template <>
struct DenseMapInfo<mlir::PassInstrumentation::PipelineParentInfo> {};
} // namespace llvm

#endif // MLIR_PASS_PASSINSTRUMENTATION_H_