LLVM  8.0.1
MachineFunctionPrinterPass.cpp
Go to the documentation of this file.
1 //===-- MachineFunctionPrinterPass.cpp ------------------------------------===//
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 // MachineFunctionPrinterPass implementation.
11 //
12 //===----------------------------------------------------------------------===//
13 
16 #include "llvm/CodeGen/Passes.h"
19 #include "llvm/Support/Debug.h"
21 
22 using namespace llvm;
23 
24 namespace {
25 /// MachineFunctionPrinterPass - This is a pass to dump the IR of a
26 /// MachineFunction.
27 ///
28 struct MachineFunctionPrinterPass : public MachineFunctionPass {
29  static char ID;
30 
31  raw_ostream &OS;
32  const std::string Banner;
33 
34  MachineFunctionPrinterPass() : MachineFunctionPass(ID), OS(dbgs()) { }
35  MachineFunctionPrinterPass(raw_ostream &os, const std::string &banner)
36  : MachineFunctionPass(ID), OS(os), Banner(banner) {}
37 
38  StringRef getPassName() const override { return "MachineFunction Printer"; }
39 
40  void getAnalysisUsage(AnalysisUsage &AU) const override {
41  AU.setPreservesAll();
44  }
45 
46  bool runOnMachineFunction(MachineFunction &MF) override {
48  return false;
49  OS << "# " << Banner << ":\n";
50  MF.print(OS, getAnalysisIfAvailable<SlotIndexes>());
51  return false;
52  }
53 };
54 
56 }
57 
59 INITIALIZE_PASS(MachineFunctionPrinterPass, "machineinstr-printer",
60  "Machine Function Printer", false, false)
61 
62 namespace llvm {
63 /// Returns a newly-created MachineFunction Printer pass. The
64 /// default banner is empty.
65 ///
67  const std::string &Banner){
68  return new MachineFunctionPrinterPass(OS, Banner);
69 }
70 
71 }
This class represents lattice values for constants.
Definition: AllocatorList.h:24
char & MachineFunctionPrinterPassID
MachineFunctionPrinterPass - This pass prints out MachineInstr&#39;s.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
SlotIndexes pass.
Definition: SlotIndexes.h:331
StringRef getName() const
getName - Return the name of the corresponding LLVM function.
INITIALIZE_PASS(MachineFunctionPrinterPass, "machineinstr-printer", "Machine Function Printer", false, false) namespace llvm
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
Represent the analysis usage information of a pass.
void print(raw_ostream &OS, const SlotIndexes *=nullptr) const
print - Print out the MachineFunction in a format suitable for debugging to the specified stream...
MachineFunctionPass * createMachineFunctionPrinterPass(raw_ostream &OS, const std::string &Banner="")
MachineFunctionPrinter pass - This pass prints out the machine function to the given stream as a debu...
bool isFunctionInPrintList(StringRef FunctionName)
isFunctionInPrintList - returns true if a function should be printed via
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
Definition: Debug.cpp:133
void setPreservesAll()
Set by analyses that do not transform their input at all.
This file defines passes to print out IR in various granularities.
AnalysisUsage & addUsedIfAvailable()
Add the specified Pass class to the set of analyses used by this pass.
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:46
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49