//===- GraphPrinters.cpp - DOT printers for various graph types -----------===// // // 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 // //===----------------------------------------------------------------------===// // // This file defines several printers for various different types of graphs used // by the LLVM infrastructure. It uses the generic graph interface to convert // the graph into a .dot graph. These graphs can then be processed with the // "dot" tool to convert them to postscript or some other suitable format. // //===----------------------------------------------------------------------===// #include "llvm/IR/Dominators.h" #include "llvm/Pass.h" using namespace llvm; //===----------------------------------------------------------------------===// // DomInfoPrinter Pass //===----------------------------------------------------------------------===// namespace { class DomInfoPrinter : public FunctionPass { public: static char ID; // Pass identification, replacement for typeid DomInfoPrinter() : FunctionPass(ID) {} void getAnalysisUsage(AnalysisUsage &AU) const override { AU.setPreservesAll(); AU.addRequired<DominatorTreeWrapperPass>(); } bool runOnFunction(Function &F) override { getAnalysis<DominatorTreeWrapperPass>().print(dbgs()); return false; } }; } char DomInfoPrinter::ID = 0; static RegisterPass<DomInfoPrinter> DIP("print-dom-info", "Dominator Info Printer", true, true); |