1378f7d5dSReid Spencer //===- GraphPrinters.cpp - DOT printers for various graph types -----------===// 2378f7d5dSReid Spencer // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6378f7d5dSReid Spencer // 7378f7d5dSReid Spencer //===----------------------------------------------------------------------===// 8378f7d5dSReid Spencer // 9378f7d5dSReid Spencer // This file defines several printers for various different types of graphs used 10378f7d5dSReid Spencer // by the LLVM infrastructure. It uses the generic graph interface to convert 11378f7d5dSReid Spencer // the graph into a .dot graph. These graphs can then be processed with the 12378f7d5dSReid Spencer // "dot" tool to convert them to postscript or some other suitable format. 13378f7d5dSReid Spencer // 14378f7d5dSReid Spencer //===----------------------------------------------------------------------===// 15378f7d5dSReid Spencer 165ad5f15cSChandler Carruth #include "llvm/IR/Dominators.h" 174d88a1c2SChandler Carruth #include "llvm/Pass.h" 18962318f6SAndrew Trick 19378f7d5dSReid Spencer using namespace llvm; 20378f7d5dSReid Spencer 2181ea3bb5SDevang Patel //===----------------------------------------------------------------------===// 2281ea3bb5SDevang Patel // DomInfoPrinter Pass 2381ea3bb5SDevang Patel //===----------------------------------------------------------------------===// 2481ea3bb5SDevang Patel 2581ea3bb5SDevang Patel namespace { 2681ea3bb5SDevang Patel class DomInfoPrinter : public FunctionPass { 2781ea3bb5SDevang Patel public: 2881ea3bb5SDevang Patel static char ID; // Pass identification, replacement for typeid DomInfoPrinter()29a7aed186SOwen Anderson DomInfoPrinter() : FunctionPass(ID) {} 3081ea3bb5SDevang Patel getAnalysisUsage(AnalysisUsage & AU) const31e56917c0SCraig Topper void getAnalysisUsage(AnalysisUsage &AU) const override { 3281ea3bb5SDevang Patel AU.setPreservesAll(); 3373523021SChandler Carruth AU.addRequired<DominatorTreeWrapperPass>(); 3481ea3bb5SDevang Patel } 3581ea3bb5SDevang Patel runOnFunction(Function & F)36e56917c0SCraig Topper bool runOnFunction(Function &F) override { 378c209aa8SMatthias Braun getAnalysis<DominatorTreeWrapperPass>().print(dbgs()); 3881ea3bb5SDevang Patel return false; 3981ea3bb5SDevang Patel } 4081ea3bb5SDevang Patel }; 4112bb5054SDan Gohman } 4281ea3bb5SDevang Patel 4381ea3bb5SDevang Patel char DomInfoPrinter::ID = 0; 4481ea3bb5SDevang Patel static RegisterPass<DomInfoPrinter> 4581ea3bb5SDevang Patel DIP("print-dom-info", "Dominator Info Printer", true, true); 46