//===- GraphPrinters.cpp - DOT printers for various graph types -----------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // 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);