X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAssembly%2FPrintModulePass.h;h=ee5cff509aaa675c48cf6b074ab483db615308f7;hb=5eca075b74d62c621b160aa216b4cd50829a2cc7;hp=2d63e6d74f12b3c4517ede59abb6ccbefa3d7e65;hpb=0ad0d0e09a6fb78454c253bf84a3ec8ca9575b13;p=oota-llvm.git diff --git a/include/llvm/Assembly/PrintModulePass.h b/include/llvm/Assembly/PrintModulePass.h index 2d63e6d74f1..ee5cff509aa 100644 --- a/include/llvm/Assembly/PrintModulePass.h +++ b/include/llvm/Assembly/PrintModulePass.h @@ -1,9 +1,16 @@ -//===- llvm/Assembly/PrintModulePass.h - Printing Pass -----------*- C++ -*--=// +//===- llvm/Assembly/PrintModulePass.h - Printing Pass ----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This file defines two passes to print out a module. The PrintModulePass pass // simply prints out the entire module when it is executed. The // PrintFunctionPass class is designed to be pipelined with other -// FunctionPass's, and prints out the functions of the class as they are +// FunctionPass's, and prints out the functions of the module as they are // processed. // //===----------------------------------------------------------------------===// @@ -12,23 +19,27 @@ #define LLVM_ASSEMBLY_PRINTMODULEPASS_H #include "llvm/Pass.h" -#include "llvm/Value.h" -#include +#include "llvm/Module.h" +#include "llvm/Support/Streams.h" -class PrintModulePass : public Pass { - std::ostream *Out; // ostream to print on +namespace llvm { + +class PrintModulePass : public ModulePass { + OStream *Out; // ostream to print on bool DeleteStream; // Delete the ostream in our dtor? public: - inline PrintModulePass(std::ostream *o = &std::cout, bool DS = false) - : Out(o), DeleteStream(DS) { - } - - inline ~PrintModulePass() { + static char ID; + PrintModulePass() : ModulePass(intptr_t(&ID)), Out(&cerr), + DeleteStream(false) {} + PrintModulePass(OStream *o, bool DS = false) + : ModulePass(intptr_t(&ID)), Out(o), DeleteStream(DS) {} + + ~PrintModulePass() { if (DeleteStream) delete Out; } - - bool run(Module *M) { - (*Out) << M; + + bool runOnModule(Module &M) { + (*Out) << M << std::flush; return false; } @@ -39,29 +50,33 @@ public: class PrintFunctionPass : public FunctionPass { std::string Banner; // String to print before each function - std::ostream *Out; // ostream to print on + OStream *Out; // ostream to print on bool DeleteStream; // Delete the ostream in our dtor? public: - inline PrintFunctionPass(const std::string &B, std::ostream *o = &std::cout, - bool DS = false) - : Banner(B), Out(o), DeleteStream(DS) { - } - + static char ID; + PrintFunctionPass() : FunctionPass(intptr_t(&ID)), Banner(""), Out(&cerr), + DeleteStream(false) {} + PrintFunctionPass(const std::string &B, OStream *o = &cout, + bool DS = false) + : FunctionPass(intptr_t(&ID)), Banner(B), Out(o), DeleteStream(DS) {} + inline ~PrintFunctionPass() { if (DeleteStream) delete Out; } - + // runOnFunction - This pass just prints a banner followed by the function as // it's processed. // - bool runOnFunction(Function *F) { - (*Out) << Banner << (Value*)F; + bool runOnFunction(Function &F) { + (*Out) << Banner << static_cast(F); return false; } - + virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); } }; +} // End llvm namespace + #endif