39 lines · cpp
1//===- PrintIR.cpp - Pass to dump IR on debug stream ----------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#include "mlir/Pass/Pass.h"10#include "mlir/Transforms/Passes.h"11#include "llvm/Support/Debug.h"12 13namespace mlir {14namespace {15 16#define GEN_PASS_DEF_PRINTIRPASS17#include "mlir/Transforms/Passes.h.inc"18 19struct PrintIRPass : public impl::PrintIRPassBase<PrintIRPass> {20 using impl::PrintIRPassBase<PrintIRPass>::PrintIRPassBase;21 22 void runOnOperation() override {23 llvm::dbgs() << "// -----// IR Dump";24 if (!this->label.empty())25 llvm::dbgs() << " " << this->label;26 llvm::dbgs() << " //----- //\n";27 getOperation()->dump();28 markAllAnalysesPreserved();29 }30};31 32} // namespace33 34std::unique_ptr<Pass> createPrintIRPass(const PrintIRPassOptions &options) {35 return std::make_unique<PrintIRPass>(options);36}37 38} // namespace mlir39