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