X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAssembly%2FPrintModulePass.h;h=239fbcc0c8caae629e7a7ac18adb85e58d03b21d;hb=152096275ad45bb13d5652f7019f48be5ccd67f8;hp=7cbfc6189948c6c7652d5fcce8830a1a4ab884c2;hpb=d58243de3fe6abf76ad6cb0c3196ad2ab97e5aa9;p=oota-llvm.git diff --git a/include/llvm/Assembly/PrintModulePass.h b/include/llvm/Assembly/PrintModulePass.h index 7cbfc618994..239fbcc0c8c 100644 --- a/include/llvm/Assembly/PrintModulePass.h +++ b/include/llvm/Assembly/PrintModulePass.h @@ -1,57 +1,42 @@ -//===- llvm/Assembly/PrintModulePass.h - Printing Pass -----------*- C++ -*--=// +//===- llvm/Assembly/PrintModulePass.h - Printing Pass ----------*- C++ -*-===// // -// This file defines two passes to print out a module. The PrintModulePass -// pass simply prints out the entire module when it is executed. The -// PrintMethodPass class is designed to be pipelined with other MethodPass's, -// and prints out the methods of the class as they are processed. +// 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 module as they are +// processed. // //===----------------------------------------------------------------------===// #ifndef LLVM_ASSEMBLY_PRINTMODULEPASS_H #define LLVM_ASSEMBLY_PRINTMODULEPASS_H -#include "llvm/Pass.h" -#include +#include -class PrintModulePass : public Pass { - std::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) { - } +namespace llvm { + class FunctionPass; + class ModulePass; + class raw_ostream; - inline ~PrintModulePass() { - if (DeleteStream) delete Out; - } + /// createPrintModulePass - Create and return a pass that writes the + /// module to the specified raw_ostream. + ModulePass *createPrintModulePass(raw_ostream *OS, + bool DeleteStream=false, + const std::string &Banner = ""); - bool run(Module *M) { - (*Out) << M; - return false; - } -}; + /// createPrintFunctionPass - Create and return a pass that prints + /// functions to the specified raw_ostream as they are processed. + FunctionPass *createPrintFunctionPass(const std::string &Banner, + raw_ostream *OS, + bool DeleteStream=false); -class PrintFunctionPass : public MethodPass { - std::string Banner; // String to print before each method - std::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) { - } - - inline ~PrintFunctionPass() { - if (DeleteStream) delete Out; - } - - // runOnMethod - This pass just prints a banner followed by the method as - // it's processed. - // - bool runOnMethod(Function *F) { - (*Out) << Banner << F; - return false; - } -}; +} // End llvm namespace #endif