diff options
author | Daniel Dunbar <daniel@zuster.org> | 2008-10-21 23:33:38 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2008-10-21 23:33:38 +0000 |
commit | f4db3a51c7d806f7dcef5d9625e7cdf7f122dca9 (patch) | |
tree | 81dbaa0fce182c01c6fa0c916f24dc0773c3e34b /include/llvm/Assembly/PrintModulePass.h | |
parent | 040225fcb7e16ad7485dec9ccd23f178297a8a61 (diff) |
Privatize PrintModulePass and PrintFunctionPass and add
createPrintModulePass and createPrintFunctionPass.
- So clients who compile w/o RTTI can use them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57933 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Assembly/PrintModulePass.h')
-rw-r--r-- | include/llvm/Assembly/PrintModulePass.h | 68 |
1 files changed, 13 insertions, 55 deletions
diff --git a/include/llvm/Assembly/PrintModulePass.h b/include/llvm/Assembly/PrintModulePass.h index ee5cff509a..7f5acf418b 100644 --- a/include/llvm/Assembly/PrintModulePass.h +++ b/include/llvm/Assembly/PrintModulePass.h @@ -18,64 +18,22 @@ #ifndef LLVM_ASSEMBLY_PRINTMODULEPASS_H #define LLVM_ASSEMBLY_PRINTMODULEPASS_H -#include "llvm/Pass.h" -#include "llvm/Module.h" #include "llvm/Support/Streams.h" +#include <string> namespace llvm { - -class PrintModulePass : public ModulePass { - OStream *Out; // ostream to print on - bool DeleteStream; // Delete the ostream in our dtor? -public: - 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 runOnModule(Module &M) { - (*Out) << M << std::flush; - return false; - } - - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - } -}; - -class PrintFunctionPass : public FunctionPass { - std::string Banner; // String to print before each function - OStream *Out; // ostream to print on - bool DeleteStream; // Delete the ostream in our dtor? -public: - 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 << static_cast<Value&>(F); - return false; - } - - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - } -}; + class FunctionPass; + class ModulePass; + + /// createPrintModulePass - Create and return a pass that writes the + /// module to the specified OStream. + ModulePass *createPrintModulePass(llvm::OStream *OS, bool DeleteStream=false); + + /// createPrintFunctionPass - Create and return a pass that prints + /// functions to the specified OStream as they are processed. + FunctionPass *createPrintFunctionPass(const std::string &Banner, + llvm::OStream *OS, + bool DeleteStream=false); } // End llvm namespace |