From: Chris Lattner Date: Thu, 18 Oct 2001 20:31:42 +0000 (+0000) Subject: initial checkin X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b44405a90d9ec3e868f196ed6a3730241d6b4de0;p=oota-llvm.git initial checkin git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@902 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Assembly/PrintModulePass.h b/include/llvm/Assembly/PrintModulePass.h new file mode 100644 index 00000000000..a03b3492e62 --- /dev/null +++ b/include/llvm/Assembly/PrintModulePass.h @@ -0,0 +1,49 @@ +//===- llvm/Assembly/PrintModulePass.h - Printing Pass -----------*- C++ -*--=// +// +// This file defines a simple pass to print out methods of a module as they are +// processed. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ASSEMBLY_PRINTMODULEPASS_H +#define LLVM_ASSEMBLY_PRINTMODULEPASS_H + +#include "llvm/Pass.h" +#include "llvm/Assembly/Writer.h" + +class PrintModulePass : public Pass { + string Banner; // String to print before each method + ostream *Out; // ostream to print on + bool DeleteStream; // Delete the ostream in our dtor? + bool PrintPerMethod; // Print one method at a time rather than the whole? +public: + inline PrintModulePass(const string &B, ostream *o = &cout, + bool DS = false, + bool printPerMethod = true) + : Banner(B), Out(o), DeleteStream(DS), PrintPerMethod(printPerMethod) { + } + + inline ~PrintModulePass() { + if (DeleteStream) delete Out; + } + + // doPerMethodWork - This pass just prints a banner followed by the method as + // it's processed. + // + bool doPerMethodWork(Method *M) { + if (PrintPerMethod) + (*Out) << Banner << M; + return false; + } + + // doPassFinalization - Virtual method overriden by subclasses to do any post + // processing needed after all passes have run. + // + bool doPassFinalization(Module *M) { + if (! PrintPerMethod) + (*Out) << Banner << M; + return false; + } +}; + +#endif diff --git a/include/llvm/Bytecode/WriteBytecodePass.h b/include/llvm/Bytecode/WriteBytecodePass.h new file mode 100644 index 00000000000..6a0edbcd99f --- /dev/null +++ b/include/llvm/Bytecode/WriteBytecodePass.h @@ -0,0 +1,32 @@ +//===- llvm/Bytecode/WriteBytecodePass.h - Bytecode Writer Pass --*- C++ -*--=// +// +// This file defines a simple pass to write the working module to a file after +// pass processing is completed. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_BYTECODE_WRITEBYTECODEPASS_H +#define LLVM_BYTECODE_WRITEBYTECODEPASS_H + +#include "llvm/Pass.h" +#include "llvm/Bytecode/Writer.h" + +class WriteBytecodePass : public Pass { + ostream *Out; // ostream to print on + bool DeleteStream; +public: + inline WriteBytecodePass(ostream *o = &cout, bool DS = false) + : Out(o), DeleteStream(DS) { + } + + inline ~WriteBytecodePass() { + if (DeleteStream) delete Out; + } + + bool doPassFinalization(Module *M) { + WriteBytecodeToFile(M, *Out); + return false; + } +}; + +#endif