1 //===- llvm/Assembly/PrintModulePass.h - Printing Pass -----------*- C++ -*--=//
3 // This file defines two passes to print out a module. The PrintModulePass pass
4 // simply prints out the entire module when it is executed. The
5 // PrintFunctionPass class is designed to be pipelined with other
6 // FunctionPass's, and prints out the functions of the class as they are
9 //===----------------------------------------------------------------------===//
11 #ifndef LLVM_ASSEMBLY_PRINTMODULEPASS_H
12 #define LLVM_ASSEMBLY_PRINTMODULEPASS_H
14 #include "llvm/Pass.h"
15 #include "llvm/Value.h"
18 class PrintModulePass : public Pass {
19 std::ostream *Out; // ostream to print on
20 bool DeleteStream; // Delete the ostream in our dtor?
22 inline PrintModulePass(std::ostream *o = &std::cout, bool DS = false)
23 : Out(o), DeleteStream(DS) {
26 const char *getPassName() const { return "Module Printer"; }
28 inline ~PrintModulePass() {
29 if (DeleteStream) delete Out;
37 virtual void getAnalysisUsage(AnalysisUsage &AU) const {
42 class PrintFunctionPass : public FunctionPass {
43 std::string Banner; // String to print before each function
44 std::ostream *Out; // ostream to print on
45 bool DeleteStream; // Delete the ostream in our dtor?
47 inline PrintFunctionPass(const std::string &B, std::ostream *o = &std::cout,
49 : Banner(B), Out(o), DeleteStream(DS) {
52 const char *getPassName() const { return "Function Printer"; }
54 inline ~PrintFunctionPass() {
55 if (DeleteStream) delete Out;
58 // runOnFunction - This pass just prints a banner followed by the function as
61 bool runOnFunction(Function &F) {
62 (*Out) << Banner << (Value&)F;
66 virtual void getAnalysisUsage(AnalysisUsage &AU) const {