1//===- GraphPrinters.cpp - DOT printers for various graph types -----------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines several printers for various different types of graphs used 11// by the LLVM infrastructure. It uses the generic graph interface to convert 12// the graph into a .dot graph. These graphs can then be processed with the 13// "dot" tool to convert them to postscript or some other suitable format. 14// 15//===----------------------------------------------------------------------===// 16 17#include "llvm/IR/Dominators.h" 18#include "llvm/Pass.h" 19 20using namespace llvm; 21 22//===----------------------------------------------------------------------===// 23// DomInfoPrinter Pass 24//===----------------------------------------------------------------------===// 25 26namespace { 27 class DomInfoPrinter : public FunctionPass { 28 public: 29 static char ID; // Pass identification, replacement for typeid 30 DomInfoPrinter() : FunctionPass(ID) {} 31 32 void getAnalysisUsage(AnalysisUsage &AU) const override { 33 AU.setPreservesAll(); 34 AU.addRequired<DominatorTreeWrapperPass>(); 35 } 36 37 bool runOnFunction(Function &F) override { 38 getAnalysis<DominatorTreeWrapperPass>().dump(); 39 return false; 40 } 41 }; 42} 43 44char DomInfoPrinter::ID = 0; 45static RegisterPass<DomInfoPrinter> 46DIP("print-dom-info", "Dominator Info Printer", true, true); 47