| //===- llvm/Bytecode/WriteBytecodePass.h - Bytecode Writer Pass -*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file was developed by the LLVM research group and is distributed under |
| // the University of Illinois Open Source License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // 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" |
| #include <iostream> |
| |
| namespace llvm { |
| |
| class WriteBytecodePass : public ModulePass { |
| std::ostream *Out; // ostream to print on |
| bool DeleteStream; |
| bool CompressFile; |
| public: |
| WriteBytecodePass() |
| : Out(&std::cout), DeleteStream(false), CompressFile(true) {} |
| WriteBytecodePass(std::ostream *o, bool DS = false, bool CF = true) |
| : Out(o), DeleteStream(DS), CompressFile(CF) {} |
| |
| inline ~WriteBytecodePass() { |
| if (DeleteStream) delete Out; |
| } |
| |
| bool runOnModule(Module &M) { |
| WriteBytecodeToFile(&M, *Out, CompressFile ); |
| return false; |
| } |
| }; |
| |
| } // End llvm namespace |
| |
| #endif |