Add option to print as bytecode instead of assembly.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 18 Oct 2001 13:47:49 +0000 (13:47 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 18 Oct 2001 13:47:49 +0000 (13:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@887 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/PrintModulePass.h

index 98948d88440469bbc4fc7531f45eab7c6b598b25..c8fb08f10a8891f0a29fc63d7ac2ca1d117be275 100644 (file)
 
 #include "llvm/Transforms/Pass.h"
 #include "llvm/Assembly/Writer.h"
+#include "llvm/Bytecode/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 PrintAsBytecode;   // Print as bytecode rather than assembly?
 public:
-  inline PrintModulePass(const string &B, ostream *o = &cout, bool DS = false) 
-    : Banner(B), Out(o), DeleteStream(DS) {}
+  inline PrintModulePass(const string &B, ostream *o = &cout, bool DS = false,
+                         bool printAsBytecode = false)
+    : Banner(B), Out(o), DeleteStream(DS), PrintAsBytecode(printAsBytecode) {}
 
   ~PrintModulePass() {
     if (DeleteStream) delete Out;
@@ -27,7 +30,17 @@ public:
   // it's processed.
   //
   bool doPerMethodWork(Method *M) {
-    (*Out) << Banner << M;
+    if (! PrintAsBytecode)
+      (*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 (PrintAsBytecode)
+      WriteBytecodeToFile(M, *Out);
     return false;
   }
 };